/*请你仅使用两个队列实现一个后入先出（LIFO）的栈，并支持普通队列的全部四种操作（push、top、pop 和 empty）
* 实现 MyStack 类：
* void push(int x) 将元素 x 压入栈顶。
* int pop() 移除并返回栈顶元素。
* int top() 返回栈顶元素。
* boolean empty() 如果栈是空的，返回 true ；否则，返回 false
*
* 输入：
* ["MyStack", "push", "push", "top", "pop", "empty"]
* [[], [1], [2], [], [], []]
* 输出：
* [null, null, null, 2, 2, false]
* */

package newcoder.Queue_4;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

class Mystack{

    Queue<Integer> q1, q2;
    //初始化栈
    public Mystack(){
        q1 = new LinkedList();
        q2 = new LinkedList();
    }

    //压栈操作
    public void push(int x){
        q2.offer(x);
        while (!q1.isEmpty()){
            q2.offer(q1.poll());
        }
        Queue temp = new LinkedList();
        temp = q1;
        q1 = q2;
        q2 = temp;
    }

    //弹出栈顶元素并删除
    public int pop(){
        return q1.poll();
    }

    //获取栈顶元素
    public int top(){
        return q1.peek();
    }

    //判断栈是否为空
    public boolean empty(){
        return q1.isEmpty();
    }
}

public class Leetcode225 {

    public static void main(String[] args) {

        Mystack obj = new Mystack();
        String[] str = new String[]{"Mystack", "push", "push", "top", "pop", "empty"};
        int[][] nums = new int[][]{{}, {1}, {2}, {}, {}, {}};
        String[] resv = new String[str.length];
        for (int i = 0;i < str.length;i++){

            if (str[i] == "Mystack"){
                resv[i] = "null";
            }
            if (str[i] == "push"){
                obj.push(nums[i][0]);
                resv[i] = "null";
            }
            if (str[i] == "top"){
                resv[i] = Integer.toString(obj.top());
            }
            if (str[i] == "pop"){
                resv[i] = Integer.toString(obj.pop());
            }
            if (str[i] == "empty"){
                resv[i] = obj.empty() + "";
            }
        }
        System.out.println(Arrays.toString(resv));
    }
}
